#ifndef VERTEX_H
#define VERTEX_H

#include "point.h"
#include "edge.h"

class Vertex{
    public:
        Vertex(int = 0, bool = false);
        Vertex(int, Point, bool = false);
        Vertex(int, Point, Edge *, bool, bool = false);
        ~Vertex();

        int getID() const;

        void select(bool);
        bool isSelected();

        void setIsBoundary(bool);
        bool isBoundary();

        void setPoint(Point &);
        Point getPoint();

        void setEdge(Edge *, bool);
        Edge *getEdge();
        bool getEdgeSignal();

        void print() const;

    private:
        int id;
        bool selected;
        bool inBoundary;

        Point point;
        Edge *edge;
        bool edgeSignal; //1 - normal | 0 - inverse
};

bool lessThanByZ(Vertex *, Vertex *);

#endif
